'use strict';
// src/model/user/User.ts
import { Document, SchemaDefinition } from 'mongoose';
import type { IUser } from "../base/schema";
// 定义用户接口
// 定义用户接口
export interface ExpandUser extends IUser {
  nickname: string, // 用户昵称
  avatar: string; // 用户头像
  phone: object; // 用户电话
  email: string; // 用户邮箱
  age: number,
  updatedAt: Date; // 修改时间
}
const user:Partial<ExpandUser> ={
  loginCount:0,
  createdUser:"",
  createdAt:new Date(),
  updatedUser:"",
  updatedAt:new Date(),
}
export type ExpandUserDocument = Document<ExpandUser>

// 定义用户模型的结构
export default{
  nickname:{
    type:String,
    sparse:true,
    unique:[true, '该昵称已经被占用'],
    name:'用户昵称'
  },
  avatar: {
    type: String,
    sparse:true,
    name:'用户头像'
  },
  phone: {
    type: Object,
    name:'用户手机',
    sparse: true, // 稀疏
    unique: [true,'该手机号码已被占用'], // 唯一
    validate:{
      validator:(value)=> {
        return (typeof value == 'number' && !isNaN(value)) || typeof value == 'string'
      },
      message:"电话必须为字符或者数值"
    },
  },
  email: {
    type: String,
    name:'用户邮箱',
    sparse: true, // 稀疏
    unique: [true,'该邮箱地址已被占用'], // 唯一
  },
  age:{
    type:Number,
    sparse:true,
    name:'用户年龄',
    min:[0,'不能小于0'],
  },
  updatedAt: {
    type: Date,
    name:'更新时间',
    default: Date.now, // 默认创建时间为当前时间
  },
} as SchemaDefinition<ExpandUser>